Использование
Редактировал(а) Alexandr Fokin 2023/07/02 10:54
//Nuget:
//Microsoft.CodeAnalysis
//Microsoft.CodeAnalysis.Common
//Microsoft.CodeAnalysis.Workspaces.Common
//Microsoft.CodeAnalysis.Workspaces.MSBuild
//Microsoft.Build.Locator
MSBuildLocator.RegisterDefaults();
using (var msWorkspace = MSBuildWorkspace.Create())
{
msWorkspace.WorkspaceFailed += (object sender, WorkspaceDiagnosticEventArgs e) =>
{
//loadSolutionError = e;
//Error handler
};
var solution = await msWorkspace.OpenSolutionAsync(solutionPath);
var projects = solution.Projects;
// ...
}
//Microsoft.CodeAnalysis
//Microsoft.CodeAnalysis.Common
//Microsoft.CodeAnalysis.Workspaces.Common
//Microsoft.CodeAnalysis.Workspaces.MSBuild
//Microsoft.Build.Locator
MSBuildLocator.RegisterDefaults();
using (var msWorkspace = MSBuildWorkspace.Create())
{
msWorkspace.WorkspaceFailed += (object sender, WorkspaceDiagnosticEventArgs e) =>
{
//loadSolutionError = e;
//Error handler
};
var solution = await msWorkspace.OpenSolutionAsync(solutionPath);
var projects = solution.Projects;
// ...
}
- Для исследования кода можно использовать либо Visitor (CSharpSyntaxRewriter), либо получение списка всех синтаксических выражений в документе.
- Для использования механизма поиска ссылок используется класс Microsoft.CodeAnalysis.FindSymbols.SymbolFinder.
DustinCampbell/using-msbuildworkspace.md
https://gist.github.com/DustinCampbell/32cd69d04ea1c08a16ae5c4cd21dd3a3